home *** CD-ROM | disk | FTP | other *** search
/ Aminet 43 / Aminet 43 (2001)(GTI - Schatztruhe)[!][Jun 2001].iso / Aminet / game / demo / Mattonite_Src.lha / Mattonite.AMOS / Mattonite.amosSourceCode
AMOS Source Code  |  2001-03-11  |  60KB  |  1,895 lines

  1. '-> Mattonite by Stefano Regattin
  2. 'i> 2 ottobre 1996 
  3. 'm> 3,8,12,13,14,19,25,27,31 ottobre 1996
  4. 'm> 9 novembre 1996
  5. 'm> 12 novembre 1997 
  6. 'm> 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 maggio 2000 
  7. 'm> 1,4,5,6,7,8,9,11,13,14,23,26,27,28 giugno 2000 
  8. 'm> 16,17,18,19,23,24 luglio 2000
  9. 'm> 5,12,13,14,15,30 agosto 2000 
  10. 'm> 1,10,11,26 settembre 2000
  11. 'm> 12,15,24,25,26,31 ottobre 2000 
  12. 'm> 2,16,17,21,23 novembre 2000
  13. 'm> 3 dicembre 2000
  14. 'm> 5,7,8,9,10,11,13,14,17,18,22,25,26,27,28 febbraio 2001 
  15. 'm> 1,7,11 marzo 2001
  16. '----------------------------------------------------------------------------- 
  17. 'To run this game you must have all the data for it; you can find them in the  
  18. 'archive of the executables Mattonite.lha on Aminet in the drawer game/demo. 
  19. 'Per eseguire questo gioco dovete avere tutti i suoi dati; li potete trovare 
  20. 'nell'archivio degli eseguibili Mattonite.lha su Aminet nel cassetto 
  21. 'game/demo.
  22. '----------- 
  23. Set Buffer 20
  24. OGGETTI$="MattoniteOggetti.Abk"
  25. SUONI$="MattoniteSuoni.Abk"
  26. PUNTEGGI$="TopHundredScores"
  27. VERO=-1
  28. FALSO=0
  29. ALTEZZAFONT=8
  30. BANCO=65535
  31. IMMAGINIBOING=8
  32. IMMAGINIPAPERO=4
  33. IMMAGINIRUBAPALLINA=11
  34. LARGHEZZAPANNELLO=48
  35. MASSIMOBOINGINCAMPO=3
  36. MASSIMOMATTONCINIDARIDISEGNARE=83
  37. MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO=8
  38. MASSIMOPALLINEINCAMPO=5
  39. OGGETTORIGA=0
  40. OGGETTOMATTONCINODIPOTENZIAMENTO=1
  41. OGGETTOBOING=OGGETTOMATTONCINODIPOTENZIAMENTO+MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO
  42. OGGETTOCENTRODELLABARRA=OGGETTOBOING+MASSIMOBOINGINCAMPO
  43. OGGETTOLATIDELLABARRA=OGGETTOCENTRODELLABARRA+1
  44. OGGETTOPAPERO=251
  45. OGGETTORUBAPALLINA=252
  46. OGGETTOLASER=253
  47. OGGETTORAGGIOLASER=254
  48. OGGETTOPALLINA=OGGETTOPAPERO-MASSIMOPALLINEINCAMPO
  49. PRIMAPARTITA=VERO
  50. RITARDOUSCITADEIBOING=-1000
  51. SEMITONO#=1.05946
  52. VOCE=1
  53. Dim GIOCATORE$(99),PUNTEGGIO$(99)
  54. Dim DELTAXPALLINA#(MASSIMOPALLINEINCAMPO-1)
  55. Dim DELTAYPALLINA#(MASSIMOPALLINEINCAMPO-1)
  56. Dim VELOCITADELLAPALLINA#(MASSIMOPALLINEINCAMPO-1)
  57. Dim XPALLINA#(MASSIMOPALLINEINCAMPO-1),YPALLINA#(MASSIMOPALLINEINCAMPO-1)
  58. Dim BOING(MASSIMOBOINGINCAMPO-1),C0LORE(31),DURATADELLARIGA(2)
  59. Dim DURATADELRIDISEGNODELMATTONCINO(MASSIMOMATTONCINIDARIDISEGNARE-1)
  60. Dim IMMAGINEBOING(IMMAGINIBOING-1),INGOMBRODELLABARRA(2)
  61. Dim LAPALLINAERIMASTAINCOLLATAALLABARRA(MASSIMOPALLINEINCAMPO-1)
  62. Dim LAPALLINAHACOLPITOLABARRA(MASSIMOPALLINEINCAMPO-1)
  63. Dim LAPALLINAHARIMBALZATOSULBORDODELLABARRA(MASSIMOPALLINEINCAMPO-1)
  64. Dim MATTONCINO(246),MATTONCINODARIDISEGNARE(MASSIMOMATTONCINIDARIDISEGNARE-1)
  65. Dim MATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
  66. Dim PALLINA(MASSIMOPALLINEINCAMPO-1)
  67. Dim VOCE(3),X0ZONA(246),XBOING(MASSIMOBOINGINCAMPO-1)
  68. Dim XCOLLA(MASSIMOPALLINEINCAMPO-1)
  69. Dim XMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
  70. Dim Y0ZONA(246),YBOING(MASSIMOBOINGINCAMPO-1),YCOLLA(MASSIMOPALLINEINCAMPO-1)
  71. Dim YMATTONCINODIPOTENZIAMENTO(MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1)
  72. Global VERO,FALSO
  73. Global CENTOGIOCATORI$,OGGETTI$,PERCORSO$,PERCORSODEILIVELLI$
  74. Global PERCORSODELLAGRAFICA$,PERCORSODELLAMUSICA$,PUNTEGGI$
  75. Global ALTEZZAFONT,BANCO,BOINGINCAMPO,BONUS,C0LLA,C0LORIDELLOSCHERMOMENOUNO
  76. Global IMMAGINELASER,IMMAGINEPALLINA,IMMAGINERAGGIOLASER,IMMAGINIBOING
  77. Global IMMAGINIPAPERO,IMMAGINERIGADUE,IMMAGINERIGATRE,IMMAGINERIGAUNO
  78. Global IMMAGINIRUBAPALLINA,LARGHEZZAPANNELLO,LASER,LIVELLO,LUNGHEZZADELLABARRA
  79. Global LUNGHEZZADELLABARRACAMBIATA,MASSIMOBOINGINCAMPO
  80. Global MASSIMOMATTONCINIDARIDISEGNARE,MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO
  81. Global MASSIMOPALLINEINCAMPO,MATTONCINI,MATTONCINIDIPOTENZIAMENTO
  82. Global MATTONCINIRIMASTI,OGGETTOBOING,OGGETTOCENTRODELLABARRA,OGGETTOLASER
  83. Global OGGETTOLATIDELLABARRA,OGGETTOMATTONCINODIPOTENZIAMENTO,OGGETTOPALLINA
  84. Global OGGETTOPAPERO,OGGETTORAGGIOLASER,OGGETTORIGA,PALLINE,PALLINEINCAMPO
  85. Global _PAPEROINCAMPO,POSIZIONE,PUNTEGGIO,PUNTEGGIOMASSIMO,RAGGIOLASERRIFLESSO
  86. Global RAGGIOLASERSPARATO,RIGA,RIMBALZODELLEPALLINESUIMATTONCINI,RITARDOBOING
  87. Global RITARDOUSCITADEIBOING,SUONICARICATI,TASTO,TASTOGRIGIO,TASTOSHIFTPREMUTO
  88. Global T0GLILARIGA,VOCE,XBARRA,XFINALERIGA,XLASER,XPANNELLO,XRIGA,YBARRA
  89. Global YLASER
  90. Global GIOCATORE$(),PUNTEGGIO$()
  91. Global DELTAXPALLINA#(),DELTAYPALLINA#(),VELOCITADELLAPALLINA#(),XPALLINA#()
  92. Global YPALLINA#()
  93. Global BOING(),C0LORE(),DURATADELLARIGA(),DURATADELRIDISEGNODELMATTONCINO()
  94. Global IMMAGINEBOING(),INGOMBRODELLABARRA()
  95. Global LAPALLINAERIMASTAINCOLLATAALLABARRA(),LAPALLINAHACOLPITOLABARRA()
  96. Global LAPALLINAHARIMBALZATOSULBORDODELLABARRA(),MATTONCINO()
  97. Global MATTONCINODARIDISEGNARE(),MATTONCINODIPOTENZIAMENTO(),PALLINA(),VOCE()
  98. Global X0ZONA(),XBOING(),XCOLLA(),XMATTONCINODIPOTENZIAMENTO(),Y0ZONA()
  99. Global YBOING(),YCOLLA()
  100. Global YMATTONCINODIPOTENZIAMENTO()
  101. Proc INDIVIDUALAPOSIZIONEDELPROGRAMMA
  102. Proc IMPOSTAIPERCORSIDEIFILE
  103. Proc IMPOSTALOSCHERMO
  104. Proc CARICAGLIOGGETTI
  105. Proc IMPOSTAGLIOGGETTI
  106. Proc IMPOSTAICOLORI
  107. Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
  108. Proc TROVAILFONTDATA70
  109. Proc DISSOLVENZADEICOLORI[$FFF,1,1]
  110. Hide 
  111. Proc IMPOSTALARCOBALENO
  112. 'Proc CARICAISUONI 
  113. Proc CARICAILLIVELLO
  114. Proc DABANCOAVARIABILI
  115. Proc METTIILPANNELLO
  116. Proc CREALEIMMAGINIPERLERIGHE
  117. Proc IMPOSTALEZONEDEIMATTONCINI
  118. Proc METTIECONTAIMATTONCINI
  119. Proc IMPOSTALINGOMBRODELLABARRA
  120. Proc CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  121. Proc IMPOSTALADURATADELLERIGHE
  122. Proc DISSOLVENZADEICOLORI[$FFF,1,2]
  123. Proc IMPOSTAILAMPEGGI
  124. Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
  125. Repeat 
  126.  Proc MOSTRAICREDITI
  127.  Proc MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  128.  TESTOINTRODUTTIVO$="Press left mouse button to play."+Chr$(10)
  129.  TESTOINTRODUTTIVO$=TESTOINTRODUTTIVO$+"Press right mouse button to exit."
  130.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINTRODUTTIVO$,20,21,1,500]
  131.  If TASTO=-1
  132.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  133.   C0LLA=FALSO
  134.   DURATADELLARIGA=-1
  135.   INIZIODELLIVELLO=VERO
  136.   LIVELLO=0
  137.   LUNGHEZZADELLABARRA=1
  138.   LUNGHEZZADELLABARRACAMBIATA=LUNGHEZZADELLABARRA
  139.   PALLINE=5
  140.   PALLINEINCAMPO=1
  141.   PUNTEGGIO=0
  142.   RIMBALZODELLEPALLINESUIMATTONCINI=VERO
  143.   XBARRA=X Screen(X Mouse)
  144.   YBARRA=247
  145.   If PRIMAPARTITA=FALSO
  146.    Proc CANCELLAIMATTONCINI
  147.    Proc CARICAILLIVELLO
  148.    Proc DABANCOAVARIABILI
  149.    Proc METTIECONTAIMATTONCINI
  150.   Else 
  151.    PRIMAPARTITA=FALSO
  152.   End If 
  153.   Repeat 
  154.    Proc AGGIORNAILPANNELLO
  155.    If INIZIODELLIVELLO=VERO
  156.     Proc IMPOSTAIBOING
  157.     TESTOINIZIOGIOCO$="Get ready for level"+Str$(LIVELLO)+"!"+Chr$(10)
  158.     TESTOINIZIOGIOCO$=TESTOINIZIOGIOCO$+"Press a (mouse) key to begin..."
  159.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
  160.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOINIZIOGIOCO$,22,20,1,500]
  161.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  162.     If SUONICARICATI=VERO
  163.      Sam Play VOCE,1 : Proc VOCESEGUENTE
  164.     Else 
  165.      Bell 20
  166.     End If 
  167.     INIZIODELLIVELLO=FALSO
  168.    End If 
  169.    For PALLINA=0 To PALLINEINCAMPO-1
  170.     PALLINA(PALLINA)=VERO
  171.     XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
  172.     YPALLINA#(PALLINA)=YBARRA-3
  173.    Next PALLINA
  174.    Repeat 
  175.     TASTOCLICCATODELTOPO=Mouse Click
  176.     XBARRA=X Screen(X Mouse)
  177.     Proc MOSTRALABARRA
  178.     Proc CAMBIALALUNGHEZZADELLABARRA
  179.     Proc LIMITAIMOVIMENTIDELLABARRA
  180.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  181.      If PALLINA(PALLINA)=VERO
  182.       XPALLINA#(PALLINA)=XBARRA+PALLINA*7-14
  183.       YPALLINA#(PALLINA)=YBARRA-3
  184.       Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
  185.      End If 
  186.     Next PALLINA
  187.     Proc MOSTRAILLASER
  188.     If T0GLILARIGA>0
  189.      If XRIGA>0
  190.       Dec XRIGA
  191.      End If 
  192.      Proc MOSTRALARIGA[T0GLILARIGA]
  193.     Else 
  194.      If RIGA>0
  195.       If XRIGA<XFINALERIGA
  196.        Inc XRIGA
  197.        Proc MOSTRALARIGA[RIGA]
  198.       End If 
  199.      End If 
  200.     End If 
  201.     Proc MATTONCINIDIPOTENZIAMENTO[0,0]
  202.     Proc BOINGINCAMPO
  203.     Bob Update 
  204.     TASTOPREMUTO$=Lower$(Inkey$)
  205.     TASTOGRIGIO=Key Shift
  206.     TASTOSCANSITO=Scancode
  207.     Exit If TASTOPREMUTO$=Chr$(27)
  208.     If TASTOGRIGIO=4
  209.      If TASTOPREMUTO$=" "
  210.       Proc MATTONCINIDIPOTENZIAMENTO[Rnd(18)-20,0] : Rem ?
  211.      Else If TASTOSCANSITO=80 : Rem F1 key 
  212.       Add LUNGHEZZADELLABARRACAMBIATA,1,0 To 2
  213.      Else If TASTOSCANSITO=81 : Rem F2 key 
  214.       Add PALLINEINCAMPO,1,1 To 5
  215.       For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  216.        If PALLINA<PALLINEINCAMPO
  217.         PALLINA(PALLINA)=VERO
  218.        Else 
  219.         PALLINA(PALLINA)=FALSO
  220.         Proc CANCELLALAPALLINA[PALLINA]
  221.        End If 
  222.       Next PALLINA
  223.      Else If TASTOSCANSITO=82 : Rem F3 key 
  224.       If LASER=-1
  225.        LASER=1
  226.       Else If LASER=1
  227.        LASER=2
  228.       Else If LASER=2
  229.        LASER=3
  230.       Else If LASER=3
  231.        LASER=0
  232.       End If 
  233.      Else If TASTOSCANSITO=83 : Rem F4 key 
  234.       If RIGA>0 and T0GLILARIGA=0
  235.        T0GLILARIGA=RIGA
  236.       End If 
  237.       Add RIGA,1,0 To 3
  238.      End If 
  239.     End If 
  240.    Until TASTOCLICCATODELTOPO>0
  241.    For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  242.     If PALLINA<PALLINEINCAMPO
  243.      PALLINA(PALLINA)=VERO
  244.      VELOCITADELLAPALLINA#(PALLINA)=1
  245.      D1REZIONEXPALLINA=Rnd(1)
  246.      If D1REZIONEXPALLINA=1
  247.       DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
  248.      Else 
  249.       DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  250.      End If 
  251.      DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  252.     Else 
  253.      PALLINA(PALLINA)=FALSO
  254.      Proc CANCELLALAPALLINA[PALLINA]
  255.     End If 
  256.    Next PALLINA
  257.    Repeat 
  258.     TASTOCLICCATODELTOPO=Mouse Click
  259.     If TASTOCLICCATODELTOPO=1 and C0LLA=VERO
  260.      For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  261.       LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
  262.      Next PALLINA
  263.     Else If TASTOCLICCATODELTOPO=2
  264.      Proc HAISPARATOILRAGGIOLASER
  265.     End If 
  266.     Exit If TASTOPREMUTO$=Chr$(27)
  267.     TASTOPREMUTO$=Lower$(Inkey$)
  268.     Exit If TASTOPREMUTO$=Chr$(27)
  269.     TASTOGRIGIO=Key Shift
  270.     If TASTOGRIGIO>0 and TASTOGRIGIO<8
  271.      TASTOSHIFTPREMUTO=VERO
  272.     Else 
  273.      If RAGGIOLASERSPARATO=FALSO
  274.       TASTOSHIFTPREMUTO=FALSO
  275.      End If 
  276.     End If 
  277.     XBARRA=X Screen(X Mouse)
  278.     Proc MOSTRALABARRA
  279.     Proc CAMBIALALUNGHEZZADELLABARRA
  280.     Proc LIMITAIMOVIMENTIDELLABARRA
  281.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  282.      If PALLINA(PALLINA)=VERO
  283.       If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
  284.        XPALLINA#(PALLINA)=XBARRA-XCOLLA(PALLINA)
  285.        YPALLINA#(PALLINA)=YBARRA-YCOLLA(PALLINA)
  286.       Else 
  287.        XPALLINA#(PALLINA)=XPALLINA#(PALLINA)+DELTAXPALLINA#(PALLINA)
  288.        YPALLINA#(PALLINA)=YPALLINA#(PALLINA)+DELTAYPALLINA#(PALLINA)
  289.       End If 
  290.       Bob OGGETTOPALLINA+PALLINA,Int(XPALLINA#(PALLINA)),Int(YPALLINA#(PALLINA)),IMMAGINEPALLINA
  291.       If XPALLINA#(PALLINA)>XPANNELLO-1-3
  292.        XPALLINA#(PALLINA)=XPANNELLO-1-3
  293.        DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  294.        Boom 
  295.       Else If XPALLINA#(PALLINA)<3
  296.        XPALLINA#(PALLINA)=3
  297.        DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  298.        Boom 
  299.       Else If YPALLINA#(PALLINA)<3
  300.        YPALLINA#(PALLINA)=3
  301.        DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  302.        Boom 
  303.       End If 
  304.       If LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=FALSO
  305.        Proc MATTONCINOCOLPITODALLAPALLINA[PALLINA]
  306.        Proc LAPALLINAHACOLPITOLABARRA[PALLINA]
  307.        Proc LAPALLINAHACOLPITOLARIGA[PALLINA]
  308.        Proc LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
  309.       End If 
  310.      End If 
  311.     Next PALLINA
  312.     Proc MOSTRAILLASER
  313.     Proc MOSTRAILRAGGIOLASER
  314.     Proc MATTONCINOCOLPITODALRAGGIOLASER
  315.     Proc MATTONCINIDIPOTENZIAMENTO[0,0]
  316.     If T0GLILARIGA>0
  317.      If XRIGA>0
  318.       Dec XRIGA
  319.      End If 
  320.      Proc MOSTRALARIGA[T0GLILARIGA]
  321.     Else 
  322.      If RIGA>0
  323.       If XRIGA<XFINALERIGA
  324.        Inc XRIGA
  325.        Proc MOSTRALARIGA[RIGA]
  326.       Else 
  327.        If DURATADELLARIGA=-1
  328.         DURATADELLARIGA=DURATADELLARIGA(RIGA-1)
  329.        Else If DURATADELLARIGA=0
  330.         T0GLILARIGA=RIGA : RIGA=0
  331.        Else 
  332.         Dec DURATADELLARIGA
  333.        End If 
  334.       End If 
  335.      End If 
  336.     End If 
  337.     If _PAPEROINCAMPO=VERO
  338.      Proc _PAPEROINCAMPO
  339.     End If 
  340.     Proc BOINGINCAMPO
  341.     Bob Update 
  342.     For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
  343.      If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)>0
  344.       MATTONCINO=MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)
  345.       If MATTONCINO>0
  346.        X0MATTONCINO=X0ZONA(MATTONCINO-1)
  347.        Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
  348.        TIPODIMATTONCINO=MATTONCINO(MATTONCINO-1)
  349.        If TIPODIMATTONCINO=0
  350.         Ink 0 : Bar X0MATTONCINO,Y0MATTONCINO To X0MATTONCINO+19,Y0MATTONCINO+9
  351.        Else 
  352.         Paste Bob X0MATTONCINO,Y0MATTONCINO,82+TIPODIMATTONCINO
  353.        End If 
  354.       End If 
  355.       Dec DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)
  356.      End If 
  357.     Next MATTONCINODARIDISEGNARE
  358.     If BONUS>0
  359.      If RITARDODELDECREMENTODELBONUS=9
  360.       RITARDODELDECREMENTODELBONUS=0 : Dec BONUS
  361.      Else 
  362.       Inc RITARDODELDECREMENTODELBONUS
  363.      End If 
  364.     End If 
  365.     Proc MOSTRAILBONUS[FALSO]
  366.     If MATTONCINI=0
  367.      Inc LIVELLO
  368.      INIZIODELLIVELLO=VERO
  369.      Exit 
  370.     End If 
  371.    Until PALLINEINCAMPO=0
  372.    Proc CANCELLALABARRA
  373.    Proc CANCELLALEPALLINE
  374.    Proc CANCELLAIMATTONCINIDIPOTENZIAMENTO
  375.    Proc T0GLIILLASER
  376.    Proc CANCELLAILRAGGIOLASER
  377.    Proc CANCELLAIBOING
  378.    If RIGA>0
  379.     For XRIGA=XRIGA To 0 Step -1
  380.      Proc MOSTRALARIGA[RIGA]
  381.      Bob Update : Wait Vbl 
  382.     Next XRIGA
  383.    End If 
  384.    Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
  385.    Proc ANNULLAILRIDISEGNODEIMATTONCINI
  386.    Exit If TASTOPREMUTO$=Chr$(27)
  387.    If MATTONCINI=0
  388.     Proc AGGIUNGIALPUNTEGGIOILBONUS
  389.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  390.     Proc AGGIORNAILPANNELLO
  391.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE["",0,0,0,0]
  392.     Proc AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
  393.     Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  394.     Proc AGGIORNAILPANNELLO
  395.    End If 
  396.    If PALLINEINCAMPO>0
  397.     Proc CANCELLAIMATTONCINI
  398.     Proc CARICAILLIVELLO
  399.     Exit If LIVELLO=-1
  400.     Proc DABANCOAVARIABILI
  401.     Proc METTIECONTAIMATTONCINI
  402.    Else 
  403.     Dec PALLINE : PALLINEINCAMPO=1
  404.    End If 
  405.   Until PALLINE=0
  406.  End If 
  407. Until TASTO=-2
  408. Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  409. Flash Off : Proc DISSOLVENZADEICOLORI[0,1,1]
  410. Proc T0GLIIMATTONCINI
  411. Proc T0GLIILPANNELLO
  412. Proc T0GLILARCOBALENO
  413. Show : Rainbow Del 0 : Screen Close 0 : Erase All : End 
  414. Procedure AGGIORNAILPANNELLO
  415.  Proc MOSTRAILPUNTEGGIO[VERO]
  416.  Proc MOSTRAILPUNTEGGIOMASSIMO[VERO]
  417.  Proc MOSTRALEPALLINERIMASTE
  418.  Proc MOSTRAILLIVELLO
  419.  Proc MOSTRAILBONUS[VERO]
  420. End Proc
  421. Procedure AGGIUNGIALPUNTEGGIOILBONUS
  422.  If BONUS>0
  423.   BONUS$="I am going to add the bonus points..."+Chr$(10)
  424.   BONUS$=BONUS$+"...to your game points."+Chr$(10)
  425.   BONUS$=BONUS$+"Wait for a moment, please..."
  426.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,0]
  427.   Repeat 
  428.    Dec BONUS : Proc MOSTRAILBONUS[FALSO]
  429.    Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  430.   Until BONUS=0
  431.  Else 
  432.   BONUS$="There are no bonus points..."+Chr$(10)
  433.   BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
  434.   BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next level."+Chr$(10)
  435.   BONUS$=BONUS$+"Press a (mouse) key to continue..."
  436.   _ASPETTA[1000]
  437.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,0]
  438.  End If 
  439. End Proc
  440. Procedure AGGIUNGIALPUNTEGGIOILBONUSPERIMATTONCINIRIMASTI
  441.  If MATTONCINIRIMASTI>0
  442.   BONUS$="I am going to add the left bricks bonus points..."+Chr$(10)
  443.   BONUS$=BONUS$+"...to your game points,"+Chr$(10)
  444.   BONUS$=BONUS$+"adding two points for each brick left."+Chr$(10)
  445.   BONUS$=BONUS$+"You have"+Str$(MATTONCINIRIMASTI)+" bricks left."+Chr$(10)
  446.   BONUS$=BONUS$+"Wait for a moment, please..."
  447.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,22,20,1,0]
  448.   Repeat 
  449.    Dec MATTONCINIRIMASTI
  450.    Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[FALSO]
  451.   Until MATTONCINIRIMASTI=0
  452.  Else 
  453.   BONUS$="There are no left bricks bonus points..."+Chr$(10)
  454.   BONUS$=BONUS$+"...to add to your game points."+Chr$(10)
  455.   BONUS$=BONUS$+"I am sorry..."+Chr$(10)+"...I wish a better luck for the next level."+Chr$(10)
  456.   BONUS$=BONUS$+"Press a (mouse) key to continue..."
  457.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[BONUS$,21,20,1,1000]
  458.   _ASPETTA[1000]
  459.  End If 
  460. End Proc
  461. Procedure ANNULLAILRIDISEGNODEIMATTONCINI
  462.  For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
  463.   MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=0
  464.   DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=0
  465.  Next MATTONCINODARIDISEGNARE
  466. End Proc
  467. Procedure _ASPETTA[TEMP0DAASPETTARE]
  468.  TASTO=0
  469.  Timer=0
  470.  Repeat 
  471.   TASTOGRIGIO=Key Shift
  472.   TASTOPREMUTO$=Inkey$
  473.   TASTOPREMUTODELTOPO=Mouse Key
  474.   If TASTOGRIGIO>0 Then Add TASTO,TASTOGRIGIO*256 : Exit 
  475.   If TASTOPREMUTODELTOPO>0 Then TASTO=-TASTOPREMUTODELTOPO : Exit 
  476.   If TASTOPREMUTO$<>"" Then TASTO=Asc(TASTOPREMUTO$) : Exit 
  477.  Until Timer>TEMP0DAASPETTARE
  478. End Proc
  479. Procedure BOINGINCAMPO
  480.  For BOING=0 To MASSIMOBOINGINCAMPO-1
  481.   If BOING(BOING)>0
  482.    If RITARDOBOING=0
  483.     Bob OGGETTOBOING+BOING,XBOING(BOING),YBOING(BOING),IMMAGINEBOING(BOING(BOING)-1)
  484.     Add XBOING(BOING),Rnd(4)-2,0 To XFINALERIGA
  485.     Inc YBOING(BOING)
  486.     Add BOING(BOING),1,1 To 8
  487.    End If 
  488.    Proc ILBOINGESTATOCOLPITO[BOING]
  489.    Proc ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
  490.   Else If BOING(BOING)=0
  491.    XBOING(BOING)=Rnd(XFINALERIGA) : YBOING(BOING)=-9 : BOING(BOING)=Rnd(7)+1
  492.    If SUONICARICATI=VERO
  493.     Sam Play VOCE,10 : Proc VOCESEGUENTE
  494.    Else 
  495.     Bell 60
  496.    End If 
  497.   Else If BOING(BOING)<0
  498.    If BOING(BOING)=RITARDOUSCITADEIBOING
  499.     Proc CANCELLAILBOING[BOING] : Inc BOING(BOING)
  500.    Else 
  501.     Inc BOING(BOING)
  502.    End If 
  503.   End If 
  504.  Next BOING
  505.  Add RITARDOBOING,1,0 To 3
  506. End Proc
  507. Procedure CAMBIALALUNGHEZZADELLABARRA
  508.  If LUNGHEZZADELLABARRACAMBIATA<>LUNGHEZZADELLABARRA
  509.   If LUNGHEZZADELLABARRA=0
  510.    If LUNGHEZZADELLABARRACAMBIATA=1
  511.     Gosub LUNGHEZZADAZEROAUNO
  512.    End If 
  513.    If LUNGHEZZADELLABARRACAMBIATA=2
  514.     Gosub LUNGHEZZADAZEROAUNO
  515.     Gosub LUNGHEZZADAUNOADUE
  516.    End If 
  517.   Else If LUNGHEZZADELLABARRA=1
  518.    If LUNGHEZZADELLABARRACAMBIATA=0
  519.     Gosub LUNGHEZZADAUNOAZERO
  520.    End If 
  521.    If LUNGHEZZADELLABARRACAMBIATA=2
  522.     Gosub LUNGHEZZADAUNOADUE
  523.    End If 
  524.   Else If LUNGHEZZADELLABARRA=2
  525.    If LUNGHEZZADELLABARRACAMBIATA=0
  526.     Gosub LUNGHEZZADADUEAUNO
  527.     Gosub LUNGHEZZADAUNOAZERO
  528.    End If 
  529.    If LUNGHEZZADELLABARRACAMBIATA=1
  530.     Gosub LUNGHEZZADADUEAUNO
  531.    End If 
  532.   End If 
  533.  End If 
  534.  LUNGHEZZADELLABARRA=LUNGHEZZADELLABARRACAMBIATA
  535.  Pop Proc
  536.  LUNGHEZZADAZEROAUNO:
  537.  For OGGETTO=45 To 41 Step -1
  538.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  539.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+5
  540.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  541.   Bob Update 
  542.  Next OGGETTO
  543.  Return 
  544.  LUNGHEZZADAUNOADUE:
  545.  For OGGETTO=13 To 26
  546.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  547.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+14
  548.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  549.   Bob Update 
  550.  Next OGGETTO
  551.  Return 
  552.  LUNGHEZZADADUEAUNO:
  553.  For OGGETTO=26 To 13 Step -1
  554.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  555.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+14
  556.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  557.   Bob Update 
  558.  Next OGGETTO
  559.  Return 
  560.  LUNGHEZZADAUNOAZERO:
  561.  For OGGETTO=41 To 45
  562.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,OGGETTO
  563.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,OGGETTO+5
  564.   Proc LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  565.   Bob Update 
  566.  Next OGGETTO
  567.  Return 
  568. End Proc
  569. Procedure CANCELLAILBOING[BOING]
  570.  Bob Off OGGETTOBOING+BOING
  571.  Bob Update 
  572. End Proc
  573. Procedure CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  574.  Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
  575.  Bob Update 
  576.  MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
  577. End Proc
  578. Procedure CANCELLAILPAPERO
  579.  Bob Off OGGETTOPAPERO
  580.  Bob Update 
  581. End Proc
  582. Procedure CANCELLAIBOING
  583.  For BOING=0 To MASSIMOBOINGINCAMPO-1
  584.   Bob Off OGGETTOBOING+BOING
  585.  Next BOING
  586.  Bob Update 
  587. End Proc
  588. Procedure CANCELLAILRAGGIOLASER
  589.  Bob Off OGGETTORAGGIOLASER
  590.  Bob Update 
  591.  RAGGIOLASERSPARATO=FALSO
  592.  RAGGIOLASERRIFLESSO=FALSO
  593. End Proc
  594. Procedure CANCELLAIMATTONCINI
  595.  Cls 0,0,0 To XPANNELLO,Screen Height
  596. End Proc
  597. Procedure CANCELLAIMATTONCINIDIPOTENZIAMENTO
  598.  For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  599.   If MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>0
  600.    Bob Off OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO
  601.   End If 
  602.   MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=0
  603.  Next MATTONCINODIPOTENZIAMENTO
  604.  Bob Update 
  605. End Proc
  606. Procedure CANCELLALABARRA
  607.  Bob Off OGGETTOCENTRODELLABARRA
  608.  Bob Off OGGETTOLATIDELLABARRA
  609.  Bob Update 
  610. End Proc
  611. Procedure CANCELLALAPALLINA[PALLINA]
  612.  Bob Off OGGETTOPALLINA+PALLINA
  613.  Bob Update 
  614. End Proc
  615. Procedure CANCELLALEPALLINE
  616.  For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  617.   If PALLINA(PALLINA)=VERO Then Bob Off OGGETTOPALLINA+PALLINA
  618.  Next PALLINA
  619.  Bob Update 
  620. End Proc
  621. Procedure CARICAGLIOGGETTI
  622.  Load PERCORSODELLAGRAFICA$+OGGETTI$
  623. End Proc
  624. Procedure CARICAILLIVELLO
  625.  LIVELLO$="Livello"+Str$(LIVELLO)-" "
  626.  FILE$=PERCORSODEILIVELLI$+LIVELLO$
  627.  If Exist(FILE$)
  628.   Open In 1,FILE$
  629.   MARCATORE$=Input$(1,9)
  630.   LUNGHEZZABANCO=Lof(1)
  631.   Close 1
  632.   If MARCATORE$="Mattonite"
  633.    Reserve As Work BANCO,LUNGHEZZABANCO
  634.    Bload FILE$,Start(BANCO)
  635.   End If 
  636.  Else 
  637.   LIVELLO=-1
  638.  End If 
  639. End Proc
  640. Procedure CARICAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  641.  If Exist(PUNTEGGI$)
  642.   CENTOGIOCATORI$=""
  643.   Open In 1,PUNTEGGI$
  644.   For POSIZIONE=0 To 99
  645.    Exit If Eof(1)
  646.    Input #1,GIOCATORE$(POSIZIONE)
  647.    CENTOGIOCATORI$=CENTOGIOCATORI$+"<"+Str$(POSIZIONE+1)-" "+"> "
  648.    CENTOGIOCATORI$=CENTOGIOCATORI$+GIOCATORE$(POSIZIONE)+Chr$(10)
  649.    Input #1,PUNTEGGIO$(POSIZIONE)
  650.    CENTOGIOCATORI$=CENTOGIOCATORI$+"points> "
  651.    CENTOGIOCATORI$=CENTOGIOCATORI$+PUNTEGGIO$(POSIZIONE)
  652.    If Not Eof(1)
  653.     CENTOGIOCATORI$=CENTOGIOCATORI$+Chr$(10)
  654.    End If 
  655.   Next POSIZIONE
  656.   Close 1
  657.   PUNTEGGIOMASSIMO=Val(PUNTEGGIO$(0))
  658.   Inc POSIZIONE
  659.  End If 
  660. End Proc
  661. Procedure CARICAISUONI
  662.  Load PERCORSODELLAMUSICA$+SUONI$
  663. End Proc
  664. Procedure CREALEIMMAGINIPERLERIGHE
  665.  XFINALERIGA=XPANNELLO-1
  666.  IMMAGINERIGAUNO=IMMAGINEPALLINA+1
  667.  Ink 20 : Bar 0,251 To XFINALERIGA,255
  668.  Get Bob IMMAGINERIGAUNO,0,251 To XFINALERIGA+1,255+1
  669.  Hot Spot IMMAGINERIGAUNO,XFINALERIGA,0
  670.  IMMAGINERIGADUE=IMMAGINERIGAUNO+1
  671.  Ink 21 : Bar 0,251 To XFINALERIGA,255
  672.  Get Bob IMMAGINERIGADUE,0,251 To XFINALERIGA+1,255+1
  673.  Hot Spot IMMAGINERIGADUE,XFINALERIGA,0
  674.  IMMAGINERIGATRE=IMMAGINERIGADUE+1
  675.  Ink 22 : Bar 0,251 To XFINALERIGA,255
  676.  Get Bob IMMAGINERIGATRE,0,251 To XFINALERIGA+1,255+1
  677.  Hot Spot IMMAGINERIGATRE,XFINALERIGA,0
  678.  Ink 0 : Bar 0,251 To XFINALERIGA,255
  679. End Proc
  680. Procedure CREATESTOBORDATO[XTESTO,YTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
  681.  Ink C0LOREBORDO
  682.  Text XTESTO,YTESTO-1,TESTO$
  683.  Text XTESTO+1,YTESTO-1,TESTO$
  684.  Text XTESTO+1,YTESTO,TESTO$
  685.  Text XTESTO+1,YTESTO+1,TESTO$
  686.  Text XTESTO,YTESTO+1,TESTO$
  687.  Text XTESTO-1,YTESTO+1,TESTO$
  688.  Text XTESTO-1,YTESTO,TESTO$
  689.  Text XTESTO-1,YTESTO-1,TESTO$
  690.  Ink C0LORETESTO
  691.  Text XTESTO,YTESTO,TESTO$
  692. End Proc
  693. Procedure DABANCOAVARIABILI
  694.  If Length(BANCO)>0
  695.   INDIRIZZO=Start(BANCO)+9
  696.   For A=0 To 246
  697.    MATTONCINO(A)=Peek(INDIRIZZO)
  698.    Inc INDIRIZZO
  699.   Next A
  700.   For A=0 To 255
  701.    ARCOBALENO=Peek(INDIRIZZO)
  702.    Inc INDIRIZZO
  703.    ARCOBALENO=ARCOBALENO+Peek(INDIRIZZO)*$100
  704.    Rain(0,A)=ARCOBALENO : Rainbow 0,257,0,271
  705.    Wait Vbl 
  706.    Inc INDIRIZZO
  707.   Next A
  708.   BONUS=Peek(INDIRIZZO)
  709.   Inc INDIRIZZO
  710.   Add BONUS,Peek(INDIRIZZO)*100
  711.   Inc INDIRIZZO
  712.   Add BONUS,Peek(INDIRIZZO)*10000
  713.   Inc INDIRIZZO
  714.   Add BONUS,Peek(INDIRIZZO)*1000000
  715.   Inc INDIRIZZO
  716.  End If 
  717.  Erase BANCO
  718. End Proc
  719. Procedure DISSOLVENZADEICOLORI[C0LORE,VELOCITA,M0DO]
  720.  If M0DO=0
  721.   For C=0 To C0LORIDELLOSCHERMOMENOUNO
  722.    Colour C,C0LORE
  723.    If VELOCITA>0
  724.     Wait VELOCITA
  725.    End If 
  726.   Next C
  727.  Else 
  728.   Dim ROSSO(C0LORIDELLOSCHERMOMENOUNO),VERDE(C0LORIDELLOSCHERMOMENOUNO),BLU(C0LORIDELLOSCHERMOMENOUNO)
  729.   Dim ROSSOFINALE(C0LORIDELLOSCHERMOMENOUNO),VERDEFINALE(C0LORIDELLOSCHERMOMENOUNO),BLUFINALE(C0LORIDELLOSCHERMOMENOUNO)
  730.   Dim ROSSODISSOLTO(C0LORIDELLOSCHERMOMENOUNO),VERDEDISSOLTO(C0LORIDELLOSCHERMOMENOUNO),BLUDISSOLTO(C0LORIDELLOSCHERMOMENOUNO)
  731.   For C=0 To C0LORIDELLOSCHERMOMENOUNO
  732.    If M0DO=1
  733.     ROSSOFINALE(C)=C0LORE/256
  734.     VERDEFINALE(C)=C0LORE/16 mod 16
  735.     BLUFINALE(C)=C0LORE mod 16
  736.    Else If M0DO=2
  737.     ROSSOFINALE(C)=C0LORE(C)/256
  738.     VERDEFINALE(C)=C0LORE(C)/16 mod 16
  739.     BLUFINALE(C)=C0LORE(C) mod 16
  740.    End If 
  741.    ROSSO(C)=Colour(C)/256
  742.    VERDE(C)=Colour(C)/16 mod 16
  743.    BLU(C)=Colour(C) mod 16
  744.   Next C
  745.   Repeat 
  746.    For C=0 To C0LORIDELLOSCHERMOMENOUNO
  747.     If ROSSODISSOLTO(C)=FALSO
  748.      If ROSSO(C)<ROSSOFINALE(C)
  749.       Inc ROSSO(C)
  750.      Else If ROSSO(C)=ROSSOFINALE(C)
  751.       ROSSODISSOLTO(C)=VERO
  752.      Else If ROSSO(C)>ROSSOFINALE(C)
  753.       Dec ROSSO(C)
  754.      End If 
  755.     End If 
  756.     If VERDEDISSOLTO(C)=FALSO
  757.      If VERDE(C)<VERDEFINALE(C)
  758.       Inc VERDE(C)
  759.      Else If VERDE(C)=VERDEFINALE(C)
  760.       VERDEDISSOLTO(C)=VERO
  761.      Else If VERDE(C)>VERDEFINALE(C)
  762.       Dec VERDE(C)
  763.      End If 
  764.     End If 
  765.     If BLUDISSOLTO(C)=FALSO
  766.      If BLU(C)<BLUFINALE(C)
  767.       Inc BLU(C)
  768.      Else If BLU(C)=BLUFINALE(C)
  769.       BLUDISSOLTO(C)=VERO
  770.      Else If BLU(C)>BLUFINALE(C)
  771.       Dec BLU(C)
  772.      End If 
  773.     End If 
  774.     Colour C,ROSSO(C)*256+VERDE(C)*16+BLU(C)
  775.     If C=0
  776.      C0LORIDISSOLTI=0
  777.     End If 
  778.     If ROSSODISSOLTO(C)=VERO
  779.      If VERDEDISSOLTO(C)=VERO
  780.       If BLUDISSOLTO(C)=VERO
  781.        Inc C0LORIDISSOLTI
  782.       End If 
  783.      End If 
  784.     End If 
  785.    Next C
  786.    If VELOCITA>0
  787.     Wait VELOCITA
  788.    End If 
  789.   Until C0LORIDISSOLTI=C0LORIDELLOSCHERMOMENOUNO+1
  790.  End If 
  791. End Proc
  792. Procedure HAISPARATOILRAGGIOLASER
  793.  If LASER>0 and RAGGIOLASERSPARATO=FALSO
  794.   XLASER=XBARRA : YLASER=YBARRA+4 : IMMAGINERAGGIOLASER=9+LASER
  795.   RAGGIOLASERSPARATO=VERO
  796.   If SUONICARICATI=VERO
  797.    Sam Play VOCE,4,8363/SEMITONO#^LASER : Proc VOCESEGUENTE
  798.   Else 
  799.    Shoot 
  800.   End If 
  801.  End If 
  802. End Proc
  803. Procedure ILBOINGESTATOCOLPITO[BOING]
  804.  If Bob Col(OGGETTOBOING+BOING,OGGETTOPALLINA To OGGETTOPALLINA+MASSIMOPALLINEINCAMPO-1)=VERO
  805.   PALLINA=Col(-1)-OGGETTOPALLINA
  806.   XPALLINA=Int(XPALLINA#(PALLINA))
  807.   XDISTANZADELBOINGDALLAPALLINA=XBOING(BOING)-XPALLINA
  808.   YPALLINA=Int(XPALLINA#(PALLINA))
  809.   YDISTANZADELBOINGDALLAPALLINA=YBOING(BOING)-YPALLINA
  810.   If XDISTANZADELBOINGDALLAPALLINA<9
  811.    DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  812.   End If 
  813.   If YDISTANZADELBOINGDALLAPALLINA<9
  814.    DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  815.   End If 
  816.   Add PUNTEGGIO,3 : Proc MOSTRAILPUNTEGGIO[FALSO]
  817.   BOING(BOING)=RITARDOUSCITADEIBOING
  818.   If SUONICARICATI=VERO
  819.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  820.   Else 
  821.    Bell 3
  822.   End If 
  823.  Else If Bob Col(OGGETTOBOING+BOING,OGGETTORAGGIOLASER To OGGETTORAGGIOLASER)=VERO
  824.   Proc CANCELLAILRAGGIOLASER
  825.   Add PUNTEGGIO,2 : Proc MOSTRAILPUNTEGGIO[FALSO]
  826.   BOING(BOING)=RITARDOUSCITADEIBOING
  827.   If SUONICARICATI=VERO
  828.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  829.   Else 
  830.    Bell 2
  831.   End If 
  832.  Else If Bob Col(OGGETTOBOING+BOING,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  833.   Add PUNTEGGIO,1 : Proc MOSTRAILPUNTEGGIO[FALSO]
  834.   BOING(BOING)=RITARDOUSCITADEIBOING
  835.   If SUONICARICATI=VERO
  836.    Sam Play VOCE,9 : Proc VOCESEGUENTE
  837.   Else 
  838.    Bell 1
  839.   End If 
  840.  End If 
  841. End Proc
  842. Procedure ILBOINGEUSCITODALCAMPODIGIOCO[BOING]
  843.  If YBOING(BOING)>255+9 Then BOING(BOING)=RITARDOUSCITADEIBOING
  844. End Proc
  845. Procedure IMPOSTAGLIOGGETTI
  846.  IMMAGINEPALLINA=Length(1)
  847.  IMMAGINELASER=6
  848.  MATTONCINIDIPOTENZIAMENTO=Length(1)-IMMAGINIBOING-IMMAGINIRUBAPALLINA-IMMAGINIPAPERO-116
  849.  For IMMAGINE=0 To IMMAGINIBOING-1
  850.   IMMAGINEBOING(IMMAGINE)=IMMAGINEPALLINA-IMMAGINIBOING+IMMAGINE
  851.  Next IMMAGINE
  852. End Proc
  853. Procedure IMPOSTAIBOING
  854.  For BOING=0 To MASSIMOBOINGINCAMPO-1
  855.   BOING(BOING)=0
  856.  Next BOING
  857. End Proc
  858. Procedure IMPOSTAICOLORI
  859.  Get Bob Palette 
  860.  C0LORIDELLOSCHERMOMENOUNO=Screen Colour-1
  861.  If C0LORIDELLOSCHERMOMENOUNO=63 Then C0LORIDELLOSCHERMOMENOUNO=31
  862.  For C=0 To C0LORIDELLOSCHERMOMENOUNO
  863.   C0LORE(C)=Colour(C)
  864.  Next C
  865. End Proc
  866. Procedure IMPOSTAILAMPEGGI
  867.  Flash 20,"(0FF,2)(FFF,1)(0FF,2)(000,1)"
  868.  Flash 21,"(F70,2)(FFF,1)(F70,2)(000,1)"
  869.  Flash 22,"(F77,9)(FF7,9)(7F7,9)(7FF,9)(77F,9)(F7F,9)"
  870. End Proc
  871. Procedure IMPOSTAIPERCORSIDEIFILE
  872.  PERCORSODELLAGRAFICA$=PERCORSO$+"Grafica/"
  873.  PERCORSODEILIVELLI$=PERCORSO$+"Livelli/"
  874.  PERCORSODELLAMUSICA$=PERCORSO$+"Musica/"
  875. End Proc
  876. Procedure IMPOSTALADURATADELLERIGHE
  877.  DURATADELLARIGA(0)=3000
  878.  DURATADELLARIGA(1)=9000
  879.  DURATADELLARIGA(2)=27000
  880. End Proc
  881. Procedure IMPOSTALARCOBALENO
  882.  Set Rainbow 0,0,271,"","",""
  883.  For LINEADELLARCOBALENO=0 To 255
  884.   Rain(0,LINEADELLARCOBALENO)=$FFF
  885.  Next LINEADELLARCOBALENO
  886.  Rainbow 0,257,0,271
  887. End Proc
  888. Procedure IMPOSTALEVOCI
  889.  For VOCE=0 To 3
  890.   VOCE(VOCE)=2^VOCE
  891.  Next VOCE
  892. End Proc
  893. Procedure IMPOSTALEZONEDEIMATTONCINI
  894.  Reserve Zone 264
  895.  For MATTONCINO=0 To 246
  896.   LINEADELMATTONCINO=MATTONCINO/13 : RIGADELMATTONCINO=MATTONCINO mod 13
  897.   X0ZONA(MATTONCINO)=RIGADELMATTONCINO*21
  898.   Y0ZONA(MATTONCINO)=LINEADELMATTONCINO*11
  899.   X0MATTONCINO=X0ZONA(MATTONCINO)
  900.   Y0MATTONCINO=Y0ZONA(MATTONCINO)
  901.   If RIGADELMATTONCINO=12
  902.    X1MATTONCINO=X0MATTONCINO+19
  903.   Else 
  904.    X1MATTONCINO=X0MATTONCINO+20
  905.   End If 
  906.   Y1MATTONCINO=Y0MATTONCINO+9
  907.   Set Zone MATTONCINO+1,X0MATTONCINO,Y0MATTONCINO To X1MATTONCINO,Y1MATTONCINO
  908.  Next MATTONCINO
  909. End Proc
  910. Procedure IMPOSTALINGOMBRODELLABARRA
  911.  INGOMBRODELLABARRA(0)=10
  912.  INGOMBRODELLABARRA(1)=16
  913.  INGOMBRODELLABARRA(2)=31
  914. End Proc
  915. Procedure IMPOSTALOSCHERMO
  916.  Screen Open 0,320,256,64,Lowres : Curs Off : Flash Off : Pen 1 : Paper 0
  917.  Cls : Bob Update Off : Gr Writing 0 : Wait Vbl : Limit Mouse 
  918. End Proc
  919. Procedure INDIVIDUALAPOSIZIONEDELPROGRAMMA
  920.  PERCORSO$=Dir$
  921. End Proc
  922. Procedure LAPALLINAEUSCITADALCAMPODIGIOCO[PALLINA]
  923.  If YPALLINA#(PALLINA)>255+3
  924.   Proc CANCELLALAPALLINA[PALLINA]
  925.   PALLINA(PALLINA)=FALSO
  926.   Dec PALLINEINCAMPO
  927.  End If 
  928. End Proc
  929. Procedure LAPALLINAHACOLPITOLABARRA[PALLINA]
  930.  If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  931.   If LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
  932.    If C0LLA=VERO
  933.     XCOLLA(PALLINA)=XBARRA-Int(XPALLINA#(PALLINA))
  934.     YCOLLA(PALLINA)=YBARRA-Int(YPALLINA#(PALLINA))
  935.     LAPALLINAERIMASTAINCOLLATAALLABARRA(PALLINA)=VERO
  936.    End If 
  937.    If Col(OGGETTOCENTRODELLABARRA)=VERO
  938.     If LAPALLINAHARIMBALZATOSULBORDODELLABARRA(PALLINA)=VERO
  939.      DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)/2.0
  940.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)*2
  941.      LAPALLINAHARIMBALZATOSULBORDODELLABARRA(PALLINA)=FALSO
  942.     Else 
  943.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  944.     End If 
  945.    Else If Col(OGGETTOLATIDELLABARRA)=VERO
  946.     If LAPALLINAHARIMBALZATOSULBORDODELLABARRA(PALLINA)=VERO
  947.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  948.     Else 
  949.      DELTAXPALLINA#(PALLINA)=DELTAXPALLINA#(PALLINA)*2
  950.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)/2.0
  951.      LAPALLINAHARIMBALZATOSULBORDODELLABARRA(PALLINA)=VERO
  952.     End If 
  953.    End If 
  954.    If LAPALLINAHARIMBALZATOSULBORDODELLABARRA(PALLINA)=VERO
  955.     If SUONICARICATI=VERO
  956.      Sam Play VOCE,1,4181 : Proc VOCESEGUENTE
  957.     Else 
  958.      Boom 
  959.     End If 
  960.    Else 
  961.     If SUONICARICATI=VERO
  962.      Sam Play VOCE,1 : Proc VOCESEGUENTE
  963.     Else 
  964.      Boom 
  965.     End If 
  966.    End If 
  967.    LAPALLINAHACOLPITOLABARRA(PALLINA)=VERO
  968.   End If 
  969.  Else 
  970.   LAPALLINAHACOLPITOLABARRA(PALLINA)=FALSO
  971.  End If 
  972. End Proc
  973. Procedure LAPALLINAHACOLPITOLARIGA[PALLINA]
  974.  If Bob Col(OGGETTOPALLINA+PALLINA,OGGETTORIGA To OGGETTORIGA)=VERO
  975.   DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  976.   Bell 96
  977.  End If 
  978. End Proc
  979. Procedure LIMITAIMOVIMENTIDELLABARRA
  980.  X0LIMITETOPO=X Hard(INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
  981.  Y0LIMITETOPO=Y Hard(0)
  982.  X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA(LUNGHEZZADELLABARRA))
  983.  Y1LIMITETOPO=Y Hard(Screen Height-1)
  984.  Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
  985. End Proc
  986. Procedure LIMITAIMOVIMENTIDELLABARRAMENTRESTACAMBIANDO[OGGETTO]
  987.  If OGGETTO>39 and OGGETTO<46
  988.   INGOMBRODELLABARRA=46-OGGETTO+10
  989.  Else If OGGETTO>12 and OGGETTO<27
  990.   INGOMBRODELLABARRA=OGGETTO+4
  991.  End If 
  992.  X0LIMITETOPO=X Hard(INGOMBRODELLABARRA)
  993.  Y0LIMITETOPO=Y Hard(0)
  994.  X1LIMITETOPO=X Hard(XPANNELLO-1-INGOMBRODELLABARRA)
  995.  Y1LIMITETOPO=Y Hard(Screen Height-1)
  996.  Wait Vbl 
  997.  Limit Mouse X0LIMITETOPO,Y0LIMITETOPO To X1LIMITETOPO,Y1LIMITETOPO
  998. End Proc
  999. Procedure MATTONCINIDIPOTENZIAMENTO[MATTONCINO,FREQUENZADIUSCITADELMATTONCINODIPOTENZIAMENTO]
  1000.  If FREQUENZADIUSCITADELMATTONCINODIPOTENZIAMENTO>0 Then Pop Proc
  1001.  If MATTONCINO=0
  1002.   For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  1003.    TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
  1004.    If TIPODIMATTONCINODIPOTENZIAMENTO>0
  1005.     Bob OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO),115+TIPODIMATTONCINODIPOTENZIAMENTO
  1006.     Proc MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
  1007.     Inc YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
  1008.     Proc MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
  1009.    End If 
  1010.   Next MATTONCINODIPOTENZIAMENTO
  1011.  Else 
  1012.   For MATTONCINODIPOTENZIAMENTO=0 To MASSIMOMATTONCINIDIPOTENZIAMENTOINCAMPO-1
  1013.    TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)
  1014.    If TIPODIMATTONCINODIPOTENZIAMENTO=0
  1015.     If MATTONCINO>0
  1016.      MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Rnd(19)+1
  1017.      XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=X0ZONA(MATTONCINO-1)
  1018.      YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=Y0ZONA(MATTONCINO-1)
  1019.     Else If MATTONCINO<0
  1020.      MATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-MATTONCINO
  1021.      XMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=XBARRA-9
  1022.      YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)=-9
  1023.     End If 
  1024.     Exit 
  1025.    End If 
  1026.   Next MATTONCINODIPOTENZIAMENTO
  1027.  End If 
  1028. End Proc
  1029. Procedure MATTONCINOCOLPITODALLAPALLINA[PALLINA]
  1030.  XPALLINA=Int(XPALLINA#(PALLINA)) : YPALLINA=Int(YPALLINA#(PALLINA))
  1031.  MATTONCINO=Zone(XPALLINA,YPALLINA)
  1032.  If MATTONCINO>0
  1033.   MATTONELLA=MATTONCINO(MATTONCINO-1)
  1034.   If MATTONELLA>0
  1035.    If MATTONELLA<10
  1036.     MATTONCINOELIMINATODALLAPALLINA=VERO
  1037.    Else If MATTONELLA>9 and MATTONELLA<28
  1038.     Add MATTONCINO(MATTONCINO-1),-9
  1039.     Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
  1040.    Else 
  1041.     MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  1042.    End If 
  1043.    Y0MATTONCINO=Y0ZONA(MATTONCINO-1)
  1044.    Y1MATTONCINO=Y0MATTONCINO+9
  1045.    If RIMBALZODELLEPALLINESUIMATTONCINI=VERO
  1046.     If YPALLINA<Y1MATTONCINO and YPALLINA>Y0MATTONCINO
  1047.      DELTAXPALLINA#(PALLINA)=-DELTAXPALLINA#(PALLINA)
  1048.     Else 
  1049.      DELTAYPALLINA#(PALLINA)=-DELTAYPALLINA#(PALLINA)
  1050.     End If 
  1051.     If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  1052.      If SUONICARICATI=VERO
  1053.       Sam Play VOCE,3,8363*SEMITONO#^4 : Proc VOCESEGUENTE
  1054.      Else 
  1055.       Bell 40
  1056.      End If 
  1057.     Else 
  1058.      If SUONICARICATI=VERO
  1059.       Sam Play VOCE,3 : Proc VOCESEGUENTE
  1060.      Else 
  1061.       Bell 30
  1062.      End If 
  1063.     End If 
  1064.    Else 
  1065.     If MATTONCINOELIMINABILESOLODALRAGGIOLASER=VERO
  1066.      If SUONICARICATI=VERO
  1067.       Sam Play VOCE,6,8363*SEMITONO#^4 : Proc VOCESEGUENTE
  1068.      Else 
  1069.       Bell 60
  1070.      End If 
  1071.     Else 
  1072.      If SUONICARICATI=VERO
  1073.       Sam Play VOCE,6 : Proc VOCESEGUENTE
  1074.      Else 
  1075.       Bell 50
  1076.      End If 
  1077.     End If 
  1078.    End If 
  1079.    If MATTONCINOELIMINATODALLAPALLINA=VERO
  1080.     MATTONCINO(MATTONCINO-1)=0
  1081.     Proc RIDISEGNODELMATTONCINO[MATTONCINO,100]
  1082.     Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  1083.     Proc MATTONCINIDIPOTENZIAMENTO[MATTONCINO,Rnd(19)]
  1084.    End If 
  1085.   End If 
  1086.  End If 
  1087. End Proc
  1088. Procedure MATTONCINOCOLPITODALRAGGIOLASER
  1089.  If RAGGIOLASERSPARATO=VERO
  1090.   If TASTOSHIFTPREMUTO=FALSO
  1091.    ZONALASER=Zone(XLASER,YLASER)
  1092.    If ZONALASER>0
  1093.     MATTONELLA=MATTONCINO(ZONALASER-1)
  1094.     If MATTONELLA>0
  1095.      If MATTONELLA<10
  1096.       MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1097.      Else If MATTONELLA>9 and MATTONELLA<28
  1098.       Add MATTONCINO(ZONALASER-1),-9
  1099.       Proc RIDISEGNODELMATTONCINO[ZONALASER,100]
  1100.       Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  1101.       Proc CANCELLAILRAGGIOLASER
  1102.      Else If MATTONELLA=28
  1103.       If LASER>0
  1104.        MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1105.       End If 
  1106.      Else If MATTONELLA=29
  1107.       If LASER>1
  1108.        MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1109.       Else 
  1110.        Proc CANCELLAILRAGGIOLASER
  1111.       End If 
  1112.      Else If MATTONELLA=30
  1113.       If LASER=3
  1114.        MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1115.       Else 
  1116.        Proc CANCELLAILRAGGIOLASER
  1117.       End If 
  1118.      Else If MATTONELLA=31
  1119.       If LASER>0
  1120.        RAGGIOLASERRIFLESSO=VERO
  1121.        MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1122.       Else 
  1123.        Proc CANCELLAILRAGGIOLASER
  1124.       End If 
  1125.      Else If MATTONELLA=32
  1126.       If LASER>1
  1127.        RAGGIOLASERRIFLESSO=VERO
  1128.        MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1129.       Else 
  1130.        Proc CANCELLAILRAGGIOLASER
  1131.       End If 
  1132.      Else If MATTONELLA=33
  1133.       If LASER=3
  1134.        RAGGIOLASERRIFLESSO=VERO
  1135.        MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1136.       Else 
  1137.        Proc CANCELLAILRAGGIOLASER
  1138.       End If 
  1139.      End If 
  1140.      If MATTONCINOELIMINATODALRAGGIOLASER=VERO
  1141.       MATTONCINO(ZONALASER-1)=0
  1142.       Proc RIDISEGNODELMATTONCINO[ZONALASER,100]
  1143.       Dec MATTONCINI : Inc PUNTEGGIO : Proc MOSTRAILPUNTEGGIO[FALSO]
  1144.       If RAGGIOLASERRIFLESSO=FALSO
  1145.        Proc CANCELLAILRAGGIOLASER
  1146.       End If 
  1147.      End If 
  1148.     End If 
  1149.    End If 
  1150.   End If 
  1151.  End If 
  1152. End Proc
  1153. Procedure MATTONCINODIPOTENZIAMENTOPRESODALLABARRA[MATTONCINODIPOTENZIAMENTO,TIPODIMATTONCINODIPOTENZIAMENTO]
  1154.  If Bob Col(OGGETTOMATTONCINODIPOTENZIAMENTO+MATTONCINODIPOTENZIAMENTO,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1155.   If TIPODIMATTONCINODIPOTENZIAMENTO=MASSIMOMATTONCINIDIPOTENZIAMENTO
  1156.    MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
  1157.    Add PUNTEGGIO,20
  1158.   Else 
  1159.    Add PUNTEGGIO,10
  1160.   End If 
  1161.   Proc MOSTRAILPUNTEGGIO[FALSO]
  1162.   Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  1163.   Repeat 
  1164.    If TIPODIMATTONCINODIPOTENZIAMENTO=1 : Rem add a ball in the game field 
  1165.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1166.      If PALLINA(PALLINA)=FALSO
  1167.       PALLINA(PALLINA)=VERO
  1168.       XPALLINA#(PALLINA)=XBARRA
  1169.       YPALLINA#(PALLINA)=YBARRA-3
  1170.       VELOCITADELLAPALLINA#(PALLINA)=1
  1171.       D1REZIONEXPALLINA=Rnd(1)
  1172.       If D1REZIONEXPALLINA=1
  1173.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)
  1174.       Else 
  1175.        DELTAXPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  1176.       End If 
  1177.       DELTAYPALLINA#(PALLINA)=-VELOCITADELLAPALLINA#(PALLINA)
  1178.       Inc PALLINEINCAMPO
  1179.       Exit 
  1180.      End If 
  1181.     Next 
  1182.     If SUONICARICATI=VERO
  1183.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1184.     Else 
  1185.      Bell 30
  1186.     End If 
  1187.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1188.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=2 : Rem b(all)+  
  1189.     If PALLINE<1000
  1190.      Inc PALLINE : Proc MOSTRALEPALLINERIMASTE
  1191.      If SUONICARICATI=VERO
  1192.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1193.      Else 
  1194.       Bell 30
  1195.      End If 
  1196.     End If 
  1197.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1198.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=3 : Rem b(all)-    
  1199.     If PALLINE>0
  1200.      Dec PALLINE : Proc MOSTRALEPALLINERIMASTE
  1201.      If SUONICARICATI=VERO
  1202.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1203.      Else 
  1204.       Bell 10
  1205.      End If 
  1206.     End If 
  1207.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1208.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=4 : Rem B(ar)+ 
  1209.     If LUNGHEZZADELLABARRA<2
  1210.      Inc LUNGHEZZADELLABARRACAMBIATA
  1211.      If SUONICARICATI=VERO
  1212.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1213.      Else 
  1214.       Bell 30
  1215.      End If 
  1216.     End If 
  1217.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1218.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=5 : Rem B(ar)- 
  1219.     If LUNGHEZZADELLABARRA>0
  1220.      Dec LUNGHEZZADELLABARRACAMBIATA
  1221.      If SUONICARICATI=VERO
  1222.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1223.      Else 
  1224.       Bell 10
  1225.      End If 
  1226.     End If 
  1227.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1228.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=6 : Rem D(uck) 
  1229.     _PAPEROINCAMPO= Not _PAPEROINCAMPO
  1230.     If _PAPEROINCAMPO=VERO
  1231.      If SUONICARICATI=VERO
  1232.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1233.      Else 
  1234.       Bell 30
  1235.      End If 
  1236.     Else 
  1237.      If SUONICARICATI=VERO
  1238.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1239.      Else 
  1240.       Bell 10
  1241.      End If 
  1242.     End If 
  1243.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1244.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=7 : Rem G(lue) 
  1245.     C0LLA= Not C0LLA
  1246.     If C0LLA=VERO
  1247.      If SUONICARICATI=VERO
  1248.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1249.      Else 
  1250.       Bell 30
  1251.      End If 
  1252.     Else 
  1253.      If SUONICARICATI=VERO
  1254.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1255.      Else 
  1256.       Bell 10
  1257.      End If 
  1258.     End If 
  1259.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1260.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=8 : Rem L(aser)+ 
  1261.     If LASER=-1
  1262.      LASER=1
  1263.     Else If LASER=1
  1264.      LASER=2
  1265.     Else If LASER=2
  1266.      LASER=3
  1267.     End If 
  1268.     If SUONICARICATI=VERO
  1269.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1270.     Else 
  1271.      Bell 30
  1272.     End If 
  1273.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1274.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=9 : Rem L(aser)- 
  1275.     If LASER>0
  1276.      Dec LASER
  1277.      If SUONICARICATI=VERO
  1278.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1279.      Else 
  1280.       Bell 10
  1281.      End If 
  1282.     End If 
  1283.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1284.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=10 : Rem N(ext level) 
  1285.     MATTONCINIRIMASTI=MATTONCINI : MATTONCINI=0
  1286.     If SUONICARICATI=VERO
  1287.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1288.     Else 
  1289.      Bell 30
  1290.     End If 
  1291.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1292.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=11 : Rem P(oints)+  
  1293.     If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
  1294.      If PUNTEGGIO<9999800
  1295.       Add PUNTEGGIO,180 : Proc MOSTRAILPUNTEGGIO[FALSO]
  1296.      End If 
  1297.     Else 
  1298.      If PUNTEGGIO<9999900
  1299.       Add PUNTEGGIO,90 : Proc MOSTRAILPUNTEGGIO[FALSO]
  1300.      End If 
  1301.     End If 
  1302.     If SUONICARICATI=VERO
  1303.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1304.     Else 
  1305.      Bell 30
  1306.     End If 
  1307.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1308.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=12 : Rem P(oints)-  
  1309.     If MATTONCINODIPOTENZIAMENTOASORPRESA=VERO
  1310.      Add PUNTEGGIO,-220
  1311.     Else 
  1312.      Add PUNTEGGIO,-110
  1313.     End If 
  1314.     If PUNTEGGIO<0
  1315.      PUNTEGGIO=0 : Proc MOSTRAILPUNTEGGIO[FALSO]
  1316.     End If 
  1317.     If SUONICARICATI=VERO
  1318.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1319.     Else 
  1320.      Bell 10
  1321.     End If 
  1322.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1323.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=13 : Rem R(ow)+ 
  1324.     If RIGA<3
  1325.      T0GLILARIGA=RIGA : Inc RIGA
  1326.      If SUONICARICATI=VERO
  1327.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1328.      Else 
  1329.       Bell 30
  1330.      End If 
  1331.     End If 
  1332.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1333.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=14 : Rem R(ow)- 
  1334.     If RIGA>0
  1335.      T0GLILARIGA=RIGA
  1336.      If SUONICARICATI=VERO
  1337.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1338.      Else 
  1339.       Bell 30
  1340.      End If 
  1341.     End If 
  1342.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1343.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=15 : Rem S(peed)+ 
  1344.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1345.      If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)<8
  1346.       VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)+0.5
  1347.       If LAPALLINAHARIMBALZATOSULBORDODELLABARRA(PALLINA)
  1348.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
  1349.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
  1350.       Else 
  1351.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
  1352.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
  1353.       End If 
  1354.      End If 
  1355.     Next PALLINA
  1356.     If SUONICARICATI=VERO
  1357.      Sam Play VOCE,17 : Proc VOCESEGUENTE
  1358.     Else 
  1359.      Bell 30
  1360.     End If 
  1361.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1362.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=16 : Rem S(peed)- 
  1363.     For PALLINA=0 To MASSIMOPALLINEINCAMPO-1
  1364.      If PALLINA(PALLINA)=VERO and VELOCITADELLAPALLINA#(PALLINA)>0.5
  1365.       VELOCITADELLAPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)-0.5
  1366.       If LAPALLINAHARIMBALZATOSULBORDODELLABARRA(PALLINA)
  1367.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*2*Sgn(DELTAXPALLINA#(PALLINA))
  1368.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)/2.0*Sgn(DELTAYPALLINA#(PALLINA))
  1369.       Else 
  1370.        DELTAXPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAXPALLINA#(PALLINA))
  1371.        DELTAYPALLINA#(PALLINA)=VELOCITADELLAPALLINA#(PALLINA)*Sgn(DELTAYPALLINA#(PALLINA))
  1372.       End If 
  1373.      End If 
  1374.     Next PALLINA
  1375.     If SUONICARICATI=VERO
  1376.      Sam Play VOCE,16 : Proc VOCESEGUENTE
  1377.     Else 
  1378.      Bell 30
  1379.     End If 
  1380.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1381.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=17 : Rem X(treme) 
  1382.     RIMBALZODELLEPALLINESUIMATTONCINI= Not RIMBALZODELLEPALLINESUIMATTONCINI
  1383.     If RIMBALZODELLEPALLINESUIMATTONCINI=FALSO
  1384.      If SUONICARICATI=VERO
  1385.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1386.      Else 
  1387.       Bell 30
  1388.      End If 
  1389.     Else 
  1390.      If SUONICARICATI=VERO
  1391.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1392.      Else 
  1393.       Bell 10
  1394.      End If 
  1395.     End If 
  1396.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1397.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=18 : Rem y+ 
  1398.     If YBARRA<247
  1399.      Add YBARRA,5
  1400.      If SUONICARICATI=VERO
  1401.       Sam Play VOCE,16 : Proc VOCESEGUENTE
  1402.      Else 
  1403.       Bell 30
  1404.      End If 
  1405.     End If 
  1406.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1407.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=19 : Rem y- 
  1408.     If YBARRA>197
  1409.      Add YBARRA,-5
  1410.      If SUONICARICATI=VERO
  1411.       Sam Play VOCE,17 : Proc VOCESEGUENTE
  1412.      Else 
  1413.       Bell 10
  1414.      End If 
  1415.     End If 
  1416.     TIPODIMATTONCINODIPOTENZIAMENTO=0
  1417.    Else If TIPODIMATTONCINODIPOTENZIAMENTO=MATTONCINIDIPOTENZIAMENTO : Rem ?
  1418.     If SUONICARICATI=VERO
  1419.      Sam Play VOCE,18 : Proc VOCESEGUENTE
  1420.     Else 
  1421.      Bell 30
  1422.     End If 
  1423.     TIPODIMATTONCINODIPOTENZIAMENTO=Rnd(18)+1
  1424.    End If 
  1425.   Until TIPODIMATTONCINODIPOTENZIAMENTO=0
  1426.  End If 
  1427. End Proc
  1428. Procedure MATTONCINODIPOTENZIAMENTOUSCITODALCAMPODIGIOCO[MATTONCINODIPOTENZIAMENTO]
  1429.  If YMATTONCINODIPOTENZIAMENTO(MATTONCINODIPOTENZIAMENTO)>255
  1430.   Proc CANCELLAILMATTONCINODIPOTENZIAMENTO[MATTONCINODIPOTENZIAMENTO]
  1431.  End If 
  1432. End Proc
  1433. Procedure METTIILPANNELLO
  1434.  XPANNELLO=Screen Width-LARGHEZZAPANNELLO
  1435.  Paste Bob XPANNELLO,0,51 : Paste Bob XPANNELLO,128,52
  1436. End Proc
  1437. Procedure METTIECONTAIMATTONCINI
  1438.  MATTONCINI=0
  1439.  For MATTONCINO=0 To 246
  1440.   If MATTONCINO(MATTONCINO)>0
  1441.    Paste Bob X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO),82+MATTONCINO(MATTONCINO)
  1442.    Inc MATTONCINI
  1443.   Else 
  1444.    Ink 0 : Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
  1445.   End If 
  1446.  Next MATTONCINO
  1447. End Proc
  1448. Procedure MOSTRAICREDITI
  1449.  CREDITI$="EsseErre Sofware Solutions"+Chr$(10)
  1450.  CREDITI$=CREDITI$+"presents..."+Chr$(10)
  1451.  CREDITI$=CREDITI$+"************"+Chr$(10)
  1452.  CREDITI$=CREDITI$+"* MATTONITE *"+Chr$(10)
  1453.  CREDITI$=CREDITI$+"************"+Chr$(10)
  1454.  CREDITI$=CREDITI$+"by Stefano Regattin"+Chr$(10)
  1455.  CREDITI$=CREDITI$+"piazza Pietro Gasparri, 4/U"+Chr$(10)
  1456.  CREDITI$=CREDITI$+"20161 Milano (Milan) Italia (Italy)"+Chr$(10)
  1457.  CREDITI$=CREDITI$+"http://members.tripod.it/esseerre/Stefano.html"+Chr$(10)
  1458.  CREDITI$=CREDITI$+"e-mail:stefano.regattin@tin.it"+Chr$(10)
  1459.  CREDITI$=CREDITI$+"This game and its editor are freely shared out."+Chr$(10)
  1460.  CREDITI$=CREDITI$+"if you want the source codes of Mattonite,"+Chr$(10)
  1461.  CREDITI$=CREDITI$+"MattoniteEditor or both, search on Aminet the"+Chr$(10)
  1462.  CREDITI$=CREDITI$+"archive Mattonite_Src.lha."+Chr$(10)
  1463.  CREDITI$=CREDITI$+"The source codes don't require any additional"+Chr$(10)
  1464.  CREDITI$=CREDITI$+"extension."+Chr$(10)
  1465.  CREDITI$=CREDITI$+"If you will create a new game starting from these"+Chr$(10)
  1466.  CREDITI$=CREDITI$+"source codes, let me know and don't forget to"+Chr$(10)
  1467.  CREDITI$=CREDITI$+"mention me in your resulting final program."+Chr$(10)
  1468.  CREDITI$=CREDITI$+"One day I have asked to my major sister Antonella"+Chr$(10)
  1469.  CREDITI$=CREDITI$+"if she would liked I created a game for her,"+Chr$(10)
  1470.  CREDITI$=CREDITI$+"assuring her I was able to create almost any"+Chr$(10)
  1471.  CREDITI$=CREDITI$+"kind of game she wanted."+Chr$(10)
  1472.  CREDITI$=CREDITI$+"The answer was yes and she specified a game"+Chr$(10)
  1473.  CREDITI$=CREDITI$+"with a bar, a bouncing ball over the bar and"+Chr$(10)
  1474.  CREDITI$=CREDITI$+"dozens of bricks deletable by the ball hit,"+Chr$(10)
  1475.  CREDITI$=CREDITI$+"gaining points for the hits."+Chr$(10)
  1476.  CREDITI$=CREDITI$+"So I started the developing of this game and"+Chr$(10)
  1477.  CREDITI$=CREDITI$+"she called it Mattonite, that in italian means"+Chr$(10)
  1478.  CREDITI$=CREDITI$+"brickache."+Chr$(10)
  1479.  CREDITI$=CREDITI$+"press a (mouse) key to scroll quickly the text"+Chr$(10)
  1480.  CREDITI$=CREDITI$+"or press the Esc key to leave the text."+Chr$(10)
  1481.  CREDITI$=CREDITI$+"This is the end...Enjoy!"
  1482.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CREDITI$,22,22,1,250]
  1483. End Proc
  1484. Procedure MOSTRAILBONUS[M0DO]
  1485.  If M0DO=VERO
  1486.   CIFRA=BONUS/1000000 mod 10
  1487.   Paste Bob 305,120,73+CIFRA
  1488.   CIFRA=BONUS/100000 mod 10
  1489.   Paste Bob 305,138,73+CIFRA
  1490.   CIFRA=BONUS/10000 mod 10
  1491.   Paste Bob 305,156,73+CIFRA
  1492.   CIFRA=BONUS/1000 mod 10
  1493.   Paste Bob 305,174,73+CIFRA
  1494.   CIFRA=BONUS/100 mod 10
  1495.   Paste Bob 305,192,73+CIFRA
  1496.   CIFRA=BONUS/10 mod 10
  1497.   Paste Bob 305,210,73+CIFRA
  1498.   CIFRA=BONUS mod 10
  1499.   Paste Bob 305,228,73+CIFRA
  1500.  Else 
  1501.   CIFRA=BONUS mod 10
  1502.   Paste Bob 305,228,73+CIFRA
  1503.   If CIFRA=9
  1504.    CIFRA=BONUS/10 mod 10
  1505.    Paste Bob 305,210,73+CIFRA
  1506.    If CIFRA=9
  1507.     CIFRA=BONUS/100 mod 10
  1508.     Paste Bob 305,192,73+CIFRA
  1509.     If CIFRA=9
  1510.      CIFRA=BONUS/1000 mod 10
  1511.      Paste Bob 305,174,73+CIFRA
  1512.      If CIFRA=9
  1513.       CIFRA=BONUS/10000 mod 10
  1514.       Paste Bob 305,156,73+CIFRA
  1515.       If CIFRA=9
  1516.        CIFRA=BONUS/100000 mod 10
  1517.        Paste Bob 305,138,73+CIFRA
  1518.        If CIFRA=9
  1519.         CIFRA=BONUS/1000000 mod 10
  1520.         Paste Bob 305,120,73+CIFRA
  1521.        End If 
  1522.       End If 
  1523.      End If 
  1524.     End If 
  1525.    End If 
  1526.   End If 
  1527.  End If 
  1528. End Proc
  1529. Procedure MOSTRAILLASER
  1530.  If LASER>0
  1531.   Bob OGGETTOLASER,XBARRA,YBARRA,IMMAGINELASER+LASER
  1532.  Else If LASER=0
  1533.   Proc T0GLIILLASER
  1534.   LASER=-1
  1535.  End If 
  1536. End Proc
  1537. Procedure MOSTRAILLIVELLO
  1538.  CIFRA=LIVELLO/100 mod 10
  1539.  Paste Bob 273,29,63+CIFRA
  1540.  CIFRA=LIVELLO/10 mod 10
  1541.  Paste Bob 289,29,63+CIFRA
  1542.  CIFRA=LIVELLO mod 10
  1543.  Paste Bob 305,29,63+CIFRA
  1544. End Proc
  1545. Procedure MOSTRAILPUNTEGGIO[M0D0]
  1546.  If M0DO=VERO
  1547.   CIFRA=PUNTEGGIO/1000000 mod 10
  1548.   Paste Bob 273,120,53+CIFRA
  1549.   CIFRA=PUNTEGGIO/100000 mod 10
  1550.   Paste Bob 273,138,53+CIFRA
  1551.   CIFRA=PUNTEGGIO/10000 mod 10
  1552.   Paste Bob 273,156,53+CIFRA
  1553.   CIFRA=PUNTEGGIO/1000 mod 10
  1554.   Paste Bob 273,174,53+CIFRA
  1555.   CIFRA=PUNTEGGIO/100 mod 10
  1556.   Paste Bob 273,192,53+CIFRA
  1557.   CIFRA=PUNTEGGIO/10 mod 10
  1558.   Paste Bob 273,210,53+CIFRA
  1559.   CIFRA=PUNTEGGIO mod 10
  1560.   Paste Bob 273,228,53+CIFRA
  1561.  Else 
  1562.   CIFRA=PUNTEGGIO mod 10
  1563.   Paste Bob 273,228,5+Asc(Str$(CIFRA)-" ")
  1564.   If CIFRA=0
  1565.    CIFRA=PUNTEGGIO/10 mod 10
  1566.    Paste Bob 273,210,53+CIFRA
  1567.    If CIFRA=0
  1568.     CIFRA=PUNTEGGIO/100 mod 10
  1569.     Paste Bob 273,192,53+CIFRA
  1570.     If CIFRA=0
  1571.      CIFRA=PUNTEGGIO/1000 mod 10
  1572.      Paste Bob 273,174,53+CIFRA
  1573.      If CIFRA=0
  1574.       CIFRA=PUNTEGGIO/10000 mod 10
  1575.       Paste Bob 273,156,53+CIFRA
  1576.       If CIFRA=0
  1577.        CIFRA=PUNTEGGIO/100000 mod 10
  1578.        Paste Bob 273,138,53+CIFRA
  1579.        If CIFRA=0
  1580.         CIFRA=PUNTEGGIO/1000000 mod 10
  1581.         Paste Bob 273,120,53+CIFRA
  1582.        End If 
  1583.       End If 
  1584.      End If 
  1585.     End If 
  1586.    End If 
  1587.   End If 
  1588.  End If 
  1589.  If PUNTEGGIO>PUNTEGGIOMASSIMO
  1590.   PUNTEGGIOMASSIMO=PUNTEGGIO
  1591.  End If 
  1592.  Proc MOSTRAILPUNTEGGIOMASSIMO[M0DO]
  1593.  Proc MOSTRALAPOSIZIONE
  1594. End Proc
  1595. Procedure MOSTRAILPUNTEGGIOMASSIMO[M0DO]
  1596.  If M0DO=VERO
  1597.   CIFRA=PUNTEGGIOMASSIMO/1000000 mod 10
  1598.   Paste Bob 289,120,63+CIFRA
  1599.   CIFRA=PUNTEGGIOMASSIMO/100000 mod 10
  1600.   Paste Bob 289,138,63+CIFRA
  1601.   CIFRA=PUNTEGGIOMASSIMO/10000 mod 10
  1602.   Paste Bob 289,156,63+CIFRA
  1603.   CIFRA=PUNTEGGIOMASSIMO/1000 mod 10
  1604.   Paste Bob 289,174,63+CIFRA
  1605.   CIFRA=PUNTEGGIOMASSIMO/100 mod 10
  1606.   Paste Bob 289,192,63+CIFRA
  1607.   CIFRA=PUNTEGGIOMASSIMO/10 mod 10
  1608.   Paste Bob 289,210,63+CIFRA
  1609.   CIFRA=PUNTEGGIOMASSIMO mod 10
  1610.   Paste Bob 289,228,63+CIFRA
  1611.  Else 
  1612.   CIFRA=PUNTEGGIOMASSIMO mod 10
  1613.   Paste Bob 289,228,63+CIFRA
  1614.   If CIFRA=0
  1615.    CIFRA=PUNTEGGIOMASSIMO/10 mod 10
  1616.    Paste Bob 289,210,63+CIFRA
  1617.    If CIFRA=0
  1618.     CIFRA=PUNTEGGIOMASSIMO/100 mod 10
  1619.     Paste Bob 289,192,63+CIFRA
  1620.     If CIFRA=0
  1621.      CIFRA=PUNTEGGIOMASSIMO/1000 mod 10
  1622.      Paste Bob 289,174,63+CIFRA
  1623.      If CIFRA=0
  1624.       CIFRA=PUNTEGGIOMASSIMO/10000 mod 10
  1625.       Paste Bob 289,156,63+CIFRA
  1626.       If CIFRA=0
  1627.        CIFRA=PUNTEGGIOMASSIMO/100000 mod 10
  1628.        Paste Bob 289,138,63+CIFRA
  1629.        If CIFRA=0
  1630.         CIFRA=PUNTEGGIOMASSIMO/1000000 mod 10
  1631.         Paste Bob 289,120,63+CIFRA
  1632.        End If 
  1633.       End If 
  1634.      End If 
  1635.     End If 
  1636.    End If 
  1637.   End If 
  1638.  End If 
  1639. End Proc
  1640. Procedure MOSTRAILRAGGIOLASER
  1641.  If RAGGIOLASERSPARATO=VERO
  1642.   If RAGGIOLASERRIFLESSO=VERO
  1643.    If Bob Col(OGGETTORAGGIOLASER,OGGETTOCENTRODELLABARRA To OGGETTOLATIDELLABARRA)=VERO
  1644.     Proc CANCELLAILRAGGIOLASER
  1645.    Else 
  1646.     If YLASER<255
  1647.      Add YLASER,5
  1648.     Else 
  1649.      Proc CANCELLAILRAGGIOLASER
  1650.     End If 
  1651.    End If 
  1652.   Else 
  1653.    If YLASER>0
  1654.     Add YLASER,-5
  1655.    Else 
  1656.     Proc CANCELLAILRAGGIOLASER
  1657.    End If 
  1658.   End If 
  1659.   Bob OGGETTORAGGIOLASER,XLASER,YLASER,IMMAGINERAGGIOLASER
  1660.   Bob Update 
  1661.  End If 
  1662. End Proc
  1663. Procedure MOSTRAIPUNTEGGIDEICENTOMIGLIORIGIOCATORI
  1664.  If Exist(PUNTEGGI$)
  1665.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[CENTOGIOCATORI$,20,22,1,250]
  1666.  Else 
  1667.   NONCISONOGIOCATORI$="No players till now..."+Chr$(10)
  1668.   NONCISONOGIOCATORI$=NONCISONOGIOCATORI$+"Press a (mouse) key to continue"
  1669.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[NONCISONOGIOCATORI$,21,20,1,250]
  1670.  End If 
  1671. End Proc
  1672. Procedure MOSTRALABARRA
  1673.  If LUNGHEZZADELLABARRA=0
  1674.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,5
  1675.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,6
  1676.  Else If LUNGHEZZADELLABARRA=1
  1677.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,1
  1678.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,2
  1679.  Else If LUNGHEZZADELLABARRA=2
  1680.   Bob OGGETTOCENTRODELLABARRA,XBARRA,YBARRA,3
  1681.   Bob OGGETTOLATIDELLABARRA,XBARRA,YBARRA,4
  1682.  End If 
  1683. End Proc
  1684. Procedure MOSTRALAPOSIZIONE
  1685.  For POSIZIONE=1 To 100
  1686.   If PUNTEGGIO>Val(PUNTEGGIO$(POSIZIONE-1))
  1687.    Exit 
  1688.   Else If PUNTEGGIO$(POSIZIONE-1)=""
  1689.    Exit 
  1690.   End If 
  1691.  Next POSIZIONE
  1692.  CIFRA=POSIZIONE/100 mod 10
  1693.  Paste Bob 273,47,73+CIFRA
  1694.  CIFRA=POSIZIONE/10 mod 10
  1695.  Paste Bob 289,47,73+CIFRA
  1696.  CIFRA=POSIZIONE mod 10
  1697.  Paste Bob 305,47,73+CIFRA
  1698. End Proc
  1699. Procedure MOSTRALARIGA[TIPODIRIGA]
  1700.  If TIPODIRIGA=1
  1701.   IMMAGINERIGA=IMMAGINERIGAUNO
  1702.  Else If TIPODIRIGA=2
  1703.   IMMAGINERIGA=IMMAGINERIGADUE
  1704.  Else If TIPODIRIGA=3
  1705.   IMMAGINERIGA=IMMAGINERIGATRE
  1706.  End If 
  1707.  If XRIGA>0
  1708.   Bob OGGETTORIGA,XRIGA,251,IMMAGINERIGA
  1709.  Else 
  1710.   Proc T0GLILARIGA
  1711.   T0GLILARIGA=0
  1712.  End If 
  1713.  Bob Update 
  1714. End Proc
  1715. Procedure MOSTRALEPALLINERIMASTE
  1716.  PALLINERIMASTE=PALLINE-1
  1717.  CIFRA=PALLINERIMASTE/100 mod 10
  1718.  Paste Bob 273,11,53+CIFRA
  1719.  CIFRA=PALLINERIMASTE/10 mod 10
  1720.  Paste Bob 289,11,53+CIFRA
  1721.  CIFRA=PALLINERIMASTE mod 10
  1722.  Paste Bob 305,11,53+CIFRA
  1723. End Proc
  1724. Procedure _PAPEROINCAMPO
  1725. End Proc
  1726. Procedure RIDISEGNODELMATTONCINO[MATTONCINO,DURATADELRIDISEGNODELMATTONCINO]
  1727.  For MATTONCINODARIDISEGNARE=0 To MASSIMOMATTONCINIDARIDISEGNARE-1
  1728.   If MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
  1729.    MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
  1730.    DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
  1731.   Else If DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=0
  1732.    MATTONCINODARIDISEGNARE(MATTONCINODARIDISEGNARE)=MATTONCINO
  1733.    DURATADELRIDISEGNODELMATTONCINO(MATTONCINODARIDISEGNARE)=DURATADELRIDISEGNODELMATTONCINO
  1734.    Pop Proc
  1735.   End If 
  1736.  Next MATTONCINODARIDISEGNARE
  1737. End Proc
  1738. Procedure RIMETTILOSFONDO
  1739.  Put Block 1
  1740. End Proc
  1741. Procedure SUONA[SUONO,FREQUENZA]
  1742.  Sam Play VOCE(VOCE),SUONO,FREQUENZA
  1743.  Proc VOCESEGUENTE
  1744. End Proc
  1745. Procedure TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTO$,C0LORETESTOPRIMALINEA,C0LORETESTOSECONDALINEA,C0LOREBORDO,TEMP0]
  1746.  If TESTO$="" Then Get Block 1,0,0,Screen Width,Screen Height
  1747.  ALTEZZALINEA=ALTEZZAFONT+3
  1748.  LINEE=1
  1749.  POSIZIONEPAROLA=1
  1750.  Repeat 
  1751.   ACAPO=Instr(TESTO$,Chr$(10),POSIZIONEPAROLA)
  1752.   If ACAPO>0 Then Inc LINEE : POSIZIONEPAROLA=ACAPO+1
  1753.  Until ACAPO=0
  1754.  If LINEE=1
  1755.   C0LORETESTO=C0LORETESTOPRIMALINEA
  1756.   XINIZIOTESTO=(Screen Width-Text Length(TESTO$))/2
  1757.   YINIZIOTESTO=(Screen Height-(ALTEZZALINEA))/2+Text Base
  1758.   Proc RIMETTILOSFONDO
  1759.   Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO,TESTO$,C0LORETESTO,C0LOREBORDO]
  1760.   Proc _ASPETTA[TEMP0]
  1761.   If TASTO=27
  1762.    Pop Proc
  1763.   End If 
  1764.  Else 
  1765.   Dim TESTO$(LINEE-1)
  1766.   POSIZIONEPAROLA=1
  1767.   For LINEA=0 To LINEE-1
  1768.    ACAPO=Instr(TESTO$,Chr$(10),POSIZIONEPAROLA)
  1769.    If ACAPO>0
  1770.     TESTO$(LINEA)=Mid$(TESTO$,POSIZIONEPAROLA,ACAPO-POSIZIONEPAROLA)
  1771.     POSIZIONEPAROLA=ACAPO+1
  1772.    Else 
  1773.     TESTO$(LINEA)=Right$(TESTO$,Len(TESTO$)-POSIZIONEPAROLA+1)
  1774.    End If 
  1775.   Next LINEA
  1776.   ALTEZZATESTO=ALTEZZALINEA*LINEE
  1777.   If ALTEZZATESTO<Screen Height
  1778.    ILTESTOSTATUTTONELLOSCHERMO=VERO
  1779.   Else 
  1780.    For LINEA=LINEE To 2 Step -1
  1781.     ALTEZZATESTO=ALTEZZALINEA*LINEA
  1782.     If ALTEZZATESTO<Screen Height
  1783.      NUMEROMASSIMODILINEENELLOSCHERMO=LINEA
  1784.      Exit 
  1785.     End If 
  1786.    Next LINEA
  1787.   End If 
  1788.   If ILTESTOSTATUTTONELLOSCHERMO=VERO
  1789.    Proc RIMETTILOSFONDO
  1790.    YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
  1791.    For LINEA=0 To LINEE-1
  1792.     If LINEA mod 2=0
  1793.      C0LORETESTO=C0LORETESTOPRIMALINEA
  1794.     Else 
  1795.      C0LORETESTO=C0LORETESTOSECONDALINEA
  1796.     End If 
  1797.     XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
  1798.     Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
  1799.    Next LINEA
  1800.    Proc _ASPETTA[TEMP0]
  1801.    If TASTO=27
  1802.     Pop Proc
  1803.    End If 
  1804.   Else 
  1805.    Proc RIMETTILOSFONDO
  1806.    YINIZIOTESTO=(Screen Height-ALTEZZATESTO)/2+Text Base
  1807.    For LINEA=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
  1808.     If(LINEA) mod 2=0
  1809.      C0LORETESTO=C0LORETESTOPRIMALINEA
  1810.     Else 
  1811.      C0LORETESTO=C0LORETESTOSECONDALINEA
  1812.     End If 
  1813.     XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEA)))/2
  1814.     Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEA,TESTO$(LINEA),C0LORETESTO,C0LOREBORDO]
  1815.    Next LINEA
  1816.    Proc _ASPETTA[TEMP0*NUMEROMASSIMODILINEENELLOSCHERMO]
  1817.    If TASTO=27
  1818.     Pop Proc
  1819.    End If 
  1820.    For LINEA=1 To LINEE-NUMEROMASSIMODILINEENELLOSCHERMO
  1821.     Proc RIMETTILOSFONDO
  1822.     For LINEANELLOSCHERMO=0 To NUMEROMASSIMODILINEENELLOSCHERMO-1
  1823.      If(LINEA+LINEANELLOSCHERMO) mod 2=0
  1824.       C0LORETESTO=C0LORETESTOPRIMALINEA
  1825.      Else 
  1826.       C0LORETESTO=C0LORETESTOSECONDALINEA
  1827.      End If 
  1828.      XINIZIOTESTO=(Screen Width-Text Length(TESTO$(LINEANELLOSCHERMO+LINEA)))/2
  1829.      Proc CREATESTOBORDATO[XINIZIOTESTO,YINIZIOTESTO+ALTEZZALINEA*LINEANELLOSCHERMO,TESTO$(LINEANELLOSCHERMO+LINEA),C0LORETESTO,C0LOREBORDO]
  1830.     Next LINEANELLOSCHERMO
  1831.     Proc _ASPETTA[TEMP0]
  1832.     If TASTO=27
  1833.      Pop Proc
  1834.     End If 
  1835.    Next LINEA
  1836.   End If 
  1837.  End If 
  1838. End Proc
  1839. Procedure T0GLILARCOBALENO
  1840.  For LINEADELLARCOBALENO=271 To 271-255 Step -1
  1841.   Rainbow 0,257,0,LINEADELLARCOBALENO
  1842.   Wait Vbl 
  1843.  Next LINEADELLARCOBALENO
  1844. End Proc
  1845. Procedure T0GLILARIGA
  1846.  Bob Off OGGETTORIGA
  1847. End Proc
  1848. Procedure T0GLIILLASER
  1849.  Bob Off OGGETTOLASER
  1850.  Bob Update 
  1851. End Proc
  1852. Procedure T0GLIILPANNELLO
  1853.  Ink 0
  1854.  For LINEAPANNELLO=255 To 0 Step -1
  1855.   Draw XPANNELLO,LINEAPANNELLO To XPANNELLO+LARGHEZZAPANNELLO-1,LINEAPANNELLO
  1856.   Wait Vbl 
  1857.  Next LINEAPANNELLO
  1858. End Proc
  1859. Procedure T0GLIIMATTONCINI
  1860.  Ink 0
  1861.  For MATTONCINO=246 To 0 Step -1
  1862.   If MATTONCINO(MATTONCINO)>0
  1863.    Bar X0ZONA(MATTONCINO),Y0ZONA(MATTONCINO) To X0ZONA(MATTONCINO)+19,Y0ZONA(MATTONCINO)+9
  1864.    Wait Vbl 
  1865.   End If 
  1866.  Next MATTONCINO
  1867. End Proc
  1868. Procedure TROVAILFONTDATA70
  1869.  TESTOFONTEDICARATTERE$="I am looking for the Data70 font..."+Chr$(10)
  1870.  TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"...in your FONTS: drawer."+Chr$(10)
  1871.  TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Wait for a moment, please..."
  1872.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,17,17,19,0]
  1873.  Get Disc Fonts 
  1874.  For FONTEDICARATTERE=1 To 65535
  1875.   FONTEDICARATTERE$=Left$(Font$(FONTEDICARATTERE),30)-" "
  1876.   If FONTEDICARATTERE$="Data70.font" Then Exit 
  1877.  Next FONTEDICARATTERE
  1878.  If FONTEDICARATTERE<65536
  1879.   Set Font FONTEDICARATTERE
  1880.   ALTEZZAFONT=Val(Mid$(Font$(FONTEDICARATTERE),31,2)-" ")
  1881.   TESTOFONTEDICARATTERE$="The font I am using is the Data70 font! :)"+Chr$(10)
  1882.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"This font will be used for the game."+Chr$(10)
  1883.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Press a (mouse) key to continue..."
  1884.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,17,17,19,250]
  1885.  Else 
  1886.   TESTOFONTEDICARATTERE$="The font I am using is the Topaz font! :("+Chr$(10)
  1887.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"This font will be used for the game."+Chr$(10)
  1888.   TESTOFONTEDICARATTERE$=TESTOFONTEDICARATTERE$+"Press a (mouse) key to continue..."
  1889.   Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[TESTOFONTEDICARATTERE$,18,18,19,250]
  1890.  End If 
  1891.  Proc TESTOGRAFICOCENTRATOOFATTOSCORRERE[" ",0,0,0,0]
  1892. End Proc
  1893. Procedure VOCESEGUENTE
  1894.  Add VOCE,VOCE : If VOCE=16 Then VOCE=1
  1895. End Proc